perm filename VIDSUB.FAI[VIS,HPM]1 blob sn#108149 filedate 1974-06-25 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE	VIDSUB
C00005 00003	******************** SAIL INTERFACE ***********************
C00007 ENDMK
C⊗;
	TITLE	VIDSUB
	EXTERN	PICHIG,PICWID,ROWTAB,COLTAB,XL,YH,XSC,YSC
	EXTERN	SLINE,DBUF,BSK,SCRTCH
	ENTRY	VIDEO

ARRY←0 ↔ X1←1 ↔ Y1←2 ↔ X2←3 ↔ Y2←4 ↔ BT←5 ↔ XA←6 ↔ YA←7
DX←10 ↔ DY←11 ↔ PICX←12 ↔ PICY←13 ↔ XBIT←14 ↔ XPIC←15 ↔ YPIC←16 ↔ T←17

GRYUP:	0
	HRRM	BT,TI
	HRLI	ARRY,YPIC
	CAML	X1,X2			;PUT UP THE BITS MASKED BY BT
	EXCH	X1,X2			;OF PICTURE ARRY IN DD BUFFER
	CAML	Y1,Y2			;RECTANGLE X1-X2, Y1-Y2
	EXCH	Y1,Y2
	HRREI	XA,1(X2)
	SUB	XA,X1
	HRREI	YA,1(Y2)
	SUB	YA,Y1
	HRLZ	DX,PICWID
	IDIV	DX,XA
	HRLZ	DY,PICHIG
	IDIV	DY,YA
	SETZB	PICY,PICX
	JUMPGE	Y1,YLOK			;CHECK IF LOWER AND UPPER
	MOVN	PICY,Y1			;BOUNDS NEED FIXING UP
	IMUL	PICY,DY
	SETZ	Y1,
YLOK:	CAILE	Y2,740
	MOVEI	Y2,740
	JUMPGE	X1,XLOK
	MOVN	PICX,X1
	IMUL	PICX,DX
	SETZ	X1,
XLOK:	CAIL	X2,21*40
	MOVEI	X2,21*40
	CAMG	X1,X2
	CAMLE	Y1,Y2
	JRST	@GRYUP
	SUBM	X1,X2
	SUBM	Y1,Y2
	HRLI	X1,-1(X2)
	HRLI	Y1,-1(Y2)
	MOVE	YA,Y1
YLLP:	HLRZ	YPIC,PICY
	MOVE	YPIC,ROWTAB(YPIC)
	MOVEM	YPIC,SCRTCH(YA)
	ADD	PICY,DY
	AOBJN	YA,YLLP

XLP:	HRRZ	XA,X1
	HRRZ	XBIT,X1
	LSH	XA,-5
	ADD	XA,[ORM XBIT,DBUF(YPIC)]
	HRRM	XA,TJ
	ANDI	XBIT,37
	MOVE	XBIT,BSK(XBIT)
	MOVE	YA,Y1
	HLRZ	XPIC,PICX
	MOVE	XPIC,COLTAB(XPIC)
	ADD	XPIC,ARRY

YLP:	MOVE	YPIC,SCRTCH(YA)
	LDB	T,XPIC
	MOVE	YPIC,SLINE(YA)
TI:	TRNE	T,BT			;REPLACED BY ACTUAL MASK
TJ:	ORM	XBIT,DBUF(YPIC)		;ADD WORD NUMBER WITHIN SCANLINE
	AOBJN	YA,YLP

	ADD	PICX,DX
	AOBJN	X1,XLP
	JRST	@GRYUP



;******************** SAIL INTERFACE ***********************


	P←17

	DEFINE	FLOAT(N)
<	TLC	N,232000
	FADR	N,N	>

	OPDEF	FIX[247000233000]

	DEFINE	SAVAC(N)
<	IFGE	N-12,{MOVEM 12,ACS12}
	IFGE	N-16,{MOVEM 16,ACS16}
	IFGE	N-17,{MOVEM 17,ACS17}	>


	DEFINE	RESAC(N)
<	IFGE	N-12,{MOVE 12,ACS12}
	IFGE	N-16,{MOVE 16,ACS16}
	IFGE	N-17,{MOVE 17,ACS17}	>

RETAD:	0
ACS12:	0
ACS16:	0
ACS17:	0

VIDEO:	POP	P,RETAD		;PUT UP BITS BT (A MASK, USUALLY ONLY ONE BIT
	POP	P,BT		;IS ON, IF MULTIPLE BITS ARE ON, THEY ARE OR'D)
	POP	P,ARRY		;OF PICTURE PIC INTO DD RECTANGLE X1-X2,Y1-Y2
	POP	P,Y2		; VIDEO(X1,Y1,X2,Y2,PIC,BT)
	FSBR	Y2,YH
	FMPR	Y2,YSC
	FIX	Y2,
	POP	P,X2
	FSBR	X2,XL
	FMPR	X2,XSC
	FIX	X2,
	POP	P,Y1
	FSBR	Y1,YH
	FMPR	Y1,YSC
	FIX	Y1,
	POP	P,X1
	FSBR	X1,XL
	FMPR	X1,XSC
	FIX	X1,
	SAVAC(17)
	JSR	GRYUP
	RESAC(17)
	JRST	@RETAD

	END